package com.suzka.service.impl;

import com.suzka.mapper.DrugChargeMapper;
import com.suzka.pojo.DrugCharge;
import com.suzka.service.DrugChargeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
/**
 * 药品收费服务实现类，提供药品收费相关的业务逻辑操作
 */
@Service
public class DrugChargeServiceImpl implements DrugChargeService {

    //依赖注入drugChargeMapper接口
    @Autowired
    private DrugChargeMapper drugChargeMapper;

    /**
     * 查询所有药品收费记录
     * @return 药品收费记录列表
     */
    @Override
    public List<DrugCharge> findAll() {
        return drugChargeMapper.findAll();
    }

    /**
     * 根据ID查询药品收费记录
     * @param id 药品收费记录ID
     * @return 药品收费记录对象
     */
    @Override
    public DrugCharge findById(Integer id) {
        return drugChargeMapper.findById(id);
    }

    /**
     * 保存药品收费记录
     * @param drugCharge 药品收费记录对象
     * @return 保存是否成功
     */
    @Override
    public boolean save(DrugCharge drugCharge) {
        return drugChargeMapper.insert(drugCharge) > 0;
    }

    /**
     * 更新药品收费记录
     * @param drugCharge 药品收费记录对象
     * @return 更新是否成功
     */
    @Override
    public boolean update(DrugCharge drugCharge) {
        return drugChargeMapper.update(drugCharge) > 0;
    }

    /**
     * 根据ID删除药品收费记录
     * @param id 药品收费记录ID
     * @return 删除是否成功
     */
    @Override
    public boolean deleteById(Integer id) {
        return drugChargeMapper.deleteById(id) > 0;
    }

    /**
     * 根据客户ID查询药品收费记录
     * @param customerId 客户ID
     * @return 药品收费记录列表
     */
    @Override
    public List<DrugCharge> findByCustomerId(Integer customerId) {
        return drugChargeMapper.findByCustomerId(customerId);
    }

    /**
     * 根据药品ID查询药品收费记录
     * @param drugId 药品ID
     * @return 药品收费记录列表
     */
    @Override
    public List<DrugCharge> findByDrugId(Integer drugId) {
        return drugChargeMapper.findByDrugId(drugId);
    }

    /**
     * 根据日期范围查询药品收费记录
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 药品收费记录列表
     */
    @Override
    public List<DrugCharge> findByDateRange(LocalDateTime startDate, LocalDateTime endDate) {
        return drugChargeMapper.findByDateRange(startDate, endDate);
    }
}
